/**
 * 导航栏高度计算工具
 * 用于统一管理全局的导航栏高度和安全距离
 */

// 全局存储导航栏相关高度信息
let navbarInfo = {
    statusBarHeight: 0,
    navBarHeight: 44, // 默认导航栏高度 (px)
    safeAreaTop: 0,
    totalHeight: 88, // 默认总高度 (px)
    isCalculated: false
}

/**
 * 初始化导航栏高度信息
 * @returns {Promise} 返回计算结果的Promise
 */
export function initNavbarHeight() {
    return new Promise((resolve) => {
        if (navbarInfo.isCalculated) {
            resolve(navbarInfo)
            return
        }

        uni.getSystemInfo({
            success: (res) => {
                console.log('系统信息:', res)

                // 状态栏高度 (px)
                const statusBarHeight = res.statusBarHeight || 0

                // 导航栏高度 (px) - 小程序系统固定高度
                let navBarHeight = 44

                // 根据平台调整导航栏高度
                // #ifdef MP-WEIXIN
                navBarHeight = 44  // 微信小程序标准导航栏高度
                // #endif

                // #ifdef MP-ALIPAY
                navBarHeight = 48  // 支付宝小程序标准导航栏高度
                console.log('支付宝小程序导航栏配置:', {
                    statusBarHeight,
                    navBarHeight,
                    platform: '支付宝小程序'
                })
                // #endif

                // #ifdef H5
                navBarHeight = 44  // H5端导航栏高度
                // #endif

                // #ifdef APP-PLUS
                navBarHeight = 44  // APP端导航栏高度
                // #endif

                // 移除安全距离，让页面内容自行配置间距
                const safeDistance = 0

                // 计算总高度
                const totalHeight = statusBarHeight + navBarHeight + safeDistance

                // 更新全局信息
                navbarInfo = {
                    statusBarHeight,
                    navBarHeight,
                    safeAreaTop: statusBarHeight,
                    totalHeight,
                    isCalculated: true
                }

                // 更新CSS变量 (仅在H5环境下)
                // #ifdef H5
                updateCSSVariables(navbarInfo)
                // #endif

                console.log('导航栏高度信息:', navbarInfo)
                console.log('详细计算:', {
                    状态栏高度: statusBarHeight + 'px',
                    导航栏高度: navBarHeight + 'px',
                    安全距离: safeDistance + 'px',
                    总高度: totalHeight + 'px'
                })
                resolve(navbarInfo)
            },
            fail: () => {
                // 失败时使用默认值
                navbarInfo.isCalculated = true
                resolve(navbarInfo)
            }
        })
    })
}

/**
 * 获取导航栏总高度 (px)
 * @returns {number} 总高度
 */
export function getNavbarHeight() {
    return navbarInfo.totalHeight
}

/**
 * 获取导航栏总高度的CSS字符串
 * @returns {string} CSS值，如 "88px"
 */
export function getNavbarHeightCss() {
    return `${navbarInfo.totalHeight}px`
}

/**
 * 获取状态栏高度 (px)
 * @returns {number} 状态栏高度
 */
export function getStatusBarHeight() {
    return navbarInfo.statusBarHeight
}

/**
 * 获取纯导航栏高度 (px)
 * @returns {number} 导航栏高度
 */
export function getPureNavbarHeight() {
    return navbarInfo.navBarHeight
}

/**
 * 获取完整的导航栏信息
 * @returns {object} 导航栏信息对象
 */
export function getNavbarInfo() {
    return { ...navbarInfo }
}

/**
 * 重新计算导航栏高度
 * @returns {Promise} 返回计算结果的Promise
 */
export function recalculateNavbarHeight() {
    navbarInfo.isCalculated = false
    return initNavbarHeight()
}

/**
 * 更新CSS变量 (仅H5环境)
 * @param {object} info 导航栏信息
 */
function updateCSSVariables(info) {
    try {
        const root = document.documentElement
        if (root && root.style) {
            root.style.setProperty('--navbar-height', `${info.totalHeight}px`)
            root.style.setProperty('--navbar-status-bar-height', `${info.statusBarHeight}px`)
            root.style.setProperty('--navbar-pure-height', `${info.navBarHeight}px`)
            root.style.setProperty('--navbar-safe-distance', `0px`)
            console.log('CSS变量更新成功')
        }
    } catch (error) {
        console.warn('CSS变量更新失败:', error)
    }
} 